/*
 *
 * Copyright (C) 2012 Walter Lütgenau
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 */
package offset.nodes.server.view.list;

import offset.nodes.server.view.list.Sorter;
import java.util.Iterator;
import offset.nodes.server.view.list.SortingInfo.SortColumn;

/**
 *
 * @author Walter Lütgenau
 */
public class XPathSorter implements Sorter {
    SortingInfo sortingInfo;
    
    public XPathSorter(SortingInfo sortingInfo) {
        this.sortingInfo = sortingInfo;
    }

    public String getSortString() {
        if ( sortingInfo.getSortColumns().size() == 0)
            return "";
        StringBuffer result = new StringBuffer(" order by ");

        Iterator i = sortingInfo.getSortColumns().iterator();
        while(i.hasNext()) {
            SortColumn sortColumn = (SortColumn) i.next();
            result.append( "@" + sortColumn.getName() + " " + directionToString(sortColumn.getDirection()));
            if ( i.hasNext())
                result.append(",");
        }
        
        return result.toString();
    }
    
    protected String directionToString(int direction) {
        switch( direction ) {
            case SortColumn.DIRECTION_ASCENDING:
                return "ascending";
                
            default:
                return "descending";
        }
    }

}
